define(function (require, exports, module) {

    require("apps/grid");
    require("apps/easyui");

    exports.init = function (ctx, uuid) {
        var page = new $.PageDomFactory(uuid);
        var pageListComponent = new $.PageListComponent(uuid, {
            pagination: false,
            loader: function (_95e, _95f, _960) {
                var opts = $(this).datagrid("options"), $this = $(this);
                if (!opts.url) {
                    return false;
                }
                $.ajax({
                    type: opts.method,
                    url: opts.url,
                    data: _95e,
                    dataType: "json",
                    success: function (data) {
                        if ($.isErrorRequest(data)) {
                            $.messager.alert('数据加载失败', data.msg, 'error');
                            $this.datagrid("loaded");
                            return;
                        }
                        _95f({
                            total: data.length,
                            rows: data
                        });
                    },
                    error: function () {
                        _960.apply(this, arguments);
                    }
                });
            },
            view: {
                grid: "grid",
                myToolbar: "nsdb",
                colbar: "db_template"
            },
            configs: {
                gridTitle: "角色列表",
                gridUrl: ctx + "/app/api/bak/bakFiles",
                gridColumns: [
                    {field: "bakName", title: "备份名称", width: "60%"},
                    {field: "bakTime", title: "备份时间", width: "30%"}
                ]
            },
            events: {
                renderColBarBefore: function (btn, row) {
                    return true;
                },
                onClickColBtn: function (context, btn, row) {
                    switch (btn.key) {
                        case "bakup":
                            whenBakup(context, btn.href, row);
                            break;
                        case "recovery":
                            whenRecovery(context, btn.href, row);
                            break;
                        case "del":
                            whenDel(context, btn.href, row);
                            break;
                        default :
                            break;
                    }
                },
                onClickToolbarBtn: function (context, btn) {
                    switch (btn.key) {
                        case "bakup":
                            whenBakup(context, btn.href);
                            break;
                        default :
                            break;
                    }
                }
            }
        });

        var globalWindow = new $.PageWindow();

        function whenBakup(context, href) {
            $.messager.confirm("消息提醒", "是否手动备份系统数据，备份操作开始，系统将无法访问，" +
                "直到备份完成以后系统才能正常访问，是否继续操作？", function (arg) {
                if (arg) {
                    window.location.href = href;
                }
            })
        }

        function whenRecovery(context, href, row) {
            $.messager.confirm("消息提醒", "是否使用该版本的数据进行恢复，数据恢复开始，系统将无法访问，" +
                "直到数据恢复完成以后才能正常访问，是否继续操作？", function (arg) {
                if (arg) {
                    window.location.href = href + "?bakName=" + row.bakName;
                }
            })
        }

        function whenDel(context, href, row) {
            $.messager.confirm("消息提醒", "是否删除该备份版本，删除以后系统将无法再使用该版本进行数据恢复？", function (arg) {
                if (arg) {
                    $.post(href, {bakName:row.bakName}, function(data){
                        if ($.isPlainObject(data) && data.error) {
                            $.messager.alert('信息',
                                data.msg, 'info');
                        } else {
                            $.messager.alert('信息',
                                '删除成功', 'info');
                            context.grid.datagrid("reload");
                        }
                    }, "JSON");
                }
            })
        }
    };
});